package Thread.Demo1;

public class Foodie extends Thread{
    @Override
    public void run() {
        /**
         * 1.循环
         * 2.同步代码块
         * 3.判断共享数据是否到了末尾(到了末尾)
         * 4.判断共享数据是否到了末尾(没有到末尾)
         *
         */
        while (true)
        {
            synchronized (Desk.lock) {
                //判断是否还要不要吃
                if (Desk.count<=0) {
                    //吃完了
                    break;
                } else {
                    //没有吃完
                    //判断桌子上是否有面条
                    if(Desk.foodFlag==0)
                    {
                        //桌子上没有食物,等待
                        try {
                            //当前线程和锁进行绑定
                            //该锁下绑定的线程
                            //等待
                            Desk.lock.wait();
                        } catch (InterruptedException e) {
                            throw new RuntimeException(e);
                        }
                    }else {
                        //桌子上有食物
                        Desk.count--;

                        System.out.println("吃货在吃面条,还能再吃"+Desk.count+"碗");
                        Desk.foodFlag=0;
                        //唤醒线程
                        Desk.lock.notifyAll();
                    }
                }

            }
        }
    }
}
